package com.link.base.tencent.corpwx.externalcontact.service;

import com.link.base.tencent.corpwx.externalcontact.model.ExternalContact;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * 外部联系人服务，该服务所涉及的应用为外部联系人应用，对应企业微信应用管理上的【客户联系】，
 *  因agentId是额外设置的且不变，故此服务中涉及agentId的地方均使用final变量【EXTERNAL_CONTACT_AGENT_ID】直接维护在代码中
 *
 * @author 欧阳振强
 * @date 2020-01-02 15:22:51.0
 */
public interface  ExternalContactService extends BasicService<ExternalContact> {

    /**
     * 从接口获取全量客户Id列表
     *
     * @author 欧阳振强
     * @date 2020/01/02
     */
    List<String> getAccountListByApi() throws Exception;

    /**
     * 从接口获取单个客户信息，包括跟进人和跟进人标签
     *
     * @author 欧阳振强
     * @date 2020/01/02
     * @param externalContactId 客户Id
     */
    ExternalContact getAccountItemByApi(String externalContactId) throws Exception;

    /**
     * 从Link获取单个客户信息，包括跟进人和跟进人标签
     *
     * @author 欧阳振强
     * @date 2020/01/02
     * @param externalContactId 客户Id
     */
    ExternalContact getAccountItemByLink(String externalContactId) throws Exception;

    /**
     * 从企业微信同步单个客户信息到CRM
     * 
     * @author 欧阳振强
     * @date 2020/01/02
     * @param externalContactId 客户Id
     */
    void syncSingleAccountInfoFromWx(String externalContactId) throws Exception;

    /**
     * 从企业微信同步全量客户信息到CRM
     *
     * @author 欧阳振强
     * @date 2020/01/02
     */
    void syncAllAccountInfoFromWx() throws Exception;

}